package com.lyc.service;

import com.lyc.DTO.PostDTO;
import com.lyc.pojo.*;
import org.hibernate.validator.constraints.URL;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

public interface PostService {

    //添加帖子
    void addPostWithCover( Post post, MultipartFile[] coverFile) throws IOException;

    //获取所有帖子
    List<Post> getAllPosts();

    // 根据用户ID获取帖子列表
    List<Post> getPostsByUserId(Integer userId);

    // 获取当前用户帖子信息
    PageBean<Post> getUserPostInfo(Integer pageNum, Integer pageSize);

    //获取帖子详情
    Post getPostDetail(Integer id);

    // 获取所有分类信息
    List<Category> getCategories();

    // 获取帖子封面
    List<PostImages> getCover();

    // 根据帖子ID获取封面图片
    List<PostImages> getCoverById(Integer postId);

    // 获取二手/失物帖子类别
    List<ItemType> getItemTypes(Integer categoryId);

    // 获取二手/失物帖子列表--分页
    PageBean<Post> getItemList(Integer categoryId, Integer pageNum, Integer pageSize);

    // 获取二手/失物帖子列表
    List<Post> getItemLists(Integer categoryId);

    // 增加帖子浏览量
    void incrementViewCount(Integer id);

    // 修改用户帖子
    void update(PostDTO postDTO);

    //获取热门帖子
    List<Post> getHotPosts();

    // 按浏览量降序排序
    List<Post> selectAllOrderByViewCountDesc();

    // 修改帖子封面--阿里云
    //void updateCover( String imageUrl, Integer postId);

    // 添加上传封面方法--本地存储
    String uploadCover(MultipartFile file, Integer postId) throws IOException;

    // 删除帖子封面
    void deleteCover(Integer id);

    //删除用户帖子
    void deletePost(Integer id);
    
    // 批量/单个修改帖子状态
    void batchUpdatePostStatus(List<Integer> postIds, String status);
    
    // 根据用户ID删除帖子及相关数据
    void deletePostsByUserId(Integer userId);
}